package com.quemb.qmbform.view;
import com.quemb.qmbform.R;
import com.quemb.qmbform.descriptor.CellDescriptor;
import com.quemb.qmbform.descriptor.RowDescriptor;
import com.quemb.qmbform.descriptor.Value;
import android.content.Context;
import android.os.Handler;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.widget.EditText;
/**
* Created by tonimoeckel on 15.07.14.
*/
public class FormEditTextFieldCell extends FormTitleFieldCell {
private EditText mEditView;
public FormEditTextFieldCell(Context context,
RowDescriptor rowDescriptor) {
super(context, rowDescriptor);
}
private Handler handler = new Handler();
private int lastFocussedPosition = -1;
@Override
protected void init() {
super.init();
mEditView = (EditText) findViewById(R.id.editText);
mEditView.setRawInputType(InputType.TYPE_CLASS_TEXT);
setStyleId(mEditView, CellDescriptor.APPEARANCE_TEXT_VALUE, CellDescriptor.COLOR_VALUE);
}
@Override
protected void afterInit() {
super.afterInit();
mEditView.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
FormEditTextFieldCell.this.onEditTextChanged(s.toString());
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
}
protected void onEditTextChanged(String string) {
onValueChanged(new Value<String>(string));
}
@Override
protected int getResource() {
return R.layout.edit_text_field_cell;
}
@Override
protected void update() {
super.update();
updateEditView();
if (getRowDescriptor().getDisabled())
{
mEditView.setEnabled(false);
setTextColor(mEditView, CellDescriptor.COLOR_VALUE_DISABLED);
}
else
mEditView.setEnabled(true);
}
protected void updateEditView() {
String hint = getRowDescriptor().getHint(getContext());
if (hint != null) {
mEditView.setHint(hint);
}
@SuppressWarnings("unchecked") Value<String> value = (Value<String>) getRowDescriptor().getValue();
if (value != null && value.getValue() != null) {
String valueString = value.getValue();
mEditView.setText(valueString);
}
}
public EditText getEditView() {
return mEditView;
}
}